package in.rob.client.dialog; import in.lib.Constants; import in.lib.annotation.InjectView; import in.lib.handler.dialogs.DeletePostDialogResponseHandler; import in.lib.manager.APIManager; import in.lib.manager.UserManager; import in.lib.utils.Views; import in.lib.view.LinkifiedTextView; import in.model.Post; import in.rob.client.MainApplication; import in.rob.client.R; import in.rob.client.dialog.base.PostDialog; import java.util.Random; import android.app.NotificationManager; import android.app.PendingIntent; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.support.v4.app.NotificationCompat; import android.view.ViewGroup.LayoutParams; import android.view.WindowManager; import android.widget.ImageView; import android.widget.TextView; import com.nostra13.universalimageloader.core.ImageLoader; /** * Dialog used to delete a post * * Possible extra arguments: * <ul> * <li><b>{@linkplain Constants Constants.EXTRA_POST}</b>: The {@link Post} object to delete</li> * </ul> */ public class DeletePostDialog extends PostDialog { @InjectView(R.id.time) public TextView time; @InjectView(R.id.post_title) public TextView title; @InjectView(R.id.sub_title) public TextView subtitle; private Post mRelatedPost; private NotificationManager mNotificationManager; private int mNotificationId; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); mNotificationManager = (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE); mNotificationId = new Random().nextInt(); setTitle(R.string.confirm); getWindow().setLayout(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN); } @Override protected void initDialog() { Views.inject(this); ImageLoader.getInstance().displayImage(mRelatedPost.getPoster().getAvatarUrl() + "?avatar=1&id=" + mRelatedPost.getPoster().getId(), ((ImageView)findViewById(R.id.avatar)), MainApplication.getAvatarImageOptions()); ((LinkifiedTextView)getInput()).setText(mRelatedPost.getFormattedText()); ((LinkifiedTextView)getInput()).setLinkMovementMethod(null); time.setText(mRelatedPost.getDateStr()); title.setText(mRelatedPost.getPoster().getFormattedMentionName()[0]); subtitle.setText(mRelatedPost.getPoster().getFormattedMentionName()[1]); } @Override public void retrieveArguments(Bundle instances) { super.retrieveArguments(instances); if (instances.containsKey(Constants.EXTRA_POST)) { mRelatedPost = (Post)instances.getParcelable(Constants.EXTRA_POST); } } @Override protected void onSaveInstanceState(Bundle outState) { outState.putParcelable(Constants.EXTRA_POST, mRelatedPost); super.onSaveInstanceState(outState); } @Override public void positiveControl() { Intent mFailIntent = new Intent(getApplicationContext(), DeletePostDialog.class); mFailIntent.putExtra(Constants.EXTRA_POST, mRelatedPost); sendNotification(getString(R.string.deleting_post_title), getString(R.string.deleting_post)); final String token = UserManager.getAuths(getContext()).get(mRelatedPost.getPoster().getId()).getAccessToken(); APIManager.getInstance().deletePost(token, mRelatedPost.getId(), new DeletePostDialogResponseHandler(getContext(), mFailIntent, mNotificationId)); } public void sendNotification(String title, String content) { NotificationCompat.Builder notification = new NotificationCompat.Builder(getContext()); notification.setContentTitle(title); notification.setContentText(content); notification.setTicker(content); notification.setSmallIcon(R.drawable.notif); CharSequence contentTitle = getString(R.string.app_name); CharSequence contentText = content; Intent notificationIntent = new Intent(); PendingIntent contentIntent = PendingIntent.getActivity(getContext(), 0, notificationIntent, PendingIntent.FLAG_CANCEL_CURRENT); //notification.setOngoing(true); notification.setContentIntent(contentIntent); mNotificationManager.notify(mNotificationId, notification.build()); } @Override public int getContentView() { return R.layout.delete_post_dialog; } }